서울시 치안데이터 분석

“CCTV가 많으면 범죄수를
낮추는 데에 도움이 될까요?”

출처: 서울시 공공데이터포털 (https://data.seoul.go.kr/)

데이터 살펴보기
TOP 3
    자치구       총생활인구수
16  송파구  753278.4966
0   강남구  633521.1274
3   강서구  533814.0426
TOP 3
    자치구   1인가구수
4   관악구  150745
3   강서구  104509
16  송파구   87140

데이터 살펴보기
자치구
강남구    7007
관악구    5366
서초구    5060
Name: count, dtype: int64
자치구
강남구    1713
용산구    1421
구로구    1372
Name: count, dtype: int64

안전벨과 CCTV의 상관관계: 0.3032
예상과 달리, CCTV와 안전벨의 상관관계가 높지 않다.

데이터 살펴보기


치안센터와 경찰관 수의 상관관계: 0.6500
다른 변수들과 비교했을 때 가장 높은 상관관계를 보임
종로구와 강남구만 조금 다르고 나머지는 비슷하다.

데이터 살펴보기
    자치구   술집 수
0   강남구  12700
11  마포구   8258
16  송파구   7348
    자치구  총범죄건수
0   강남구  16244
16  송파구  10976
13  서초구  10458

술집 수와 총 범죄 건수의 상관계수: 0.8354
다른 변수들과 비교했을 때, 가장 높은 상관관계를 보임

상관계수 분석

범죄건수 주요 변수

  • 구별 경찰 수
  • 술집 수
  • 생활 인구 수
  • CCTV 총 수량
  • 1인가구수

회귀분석

상관 관계 높은 변수 임의 선택

VS Stepwise로 변수 선택

회귀분석

변수 전처리

df2 = df.copy()

scaler = StandardScaler()
x = ['총생활인구수', '총범죄건수', '구별 경찰수', 
    '안전벨 개수', 'CCTV 수량', '총 음식점 수', 
    '1인가구수', '파출소수']
X_scaled = scaler.fit_transform(df2[x])

X_scaled_df = pd.DataFrame(X_scaled, columns=x, index=df2.index)
  • 변수의 Scale 이 각각 다르기 때문에, 표준화 수행
  • 변수간 영향을 공정하게 비교하자

회귀분석(상관관계 기준)
X3 = X_scaled_df[['총 음식점 수','CCTV 수량','1인가구수','구별 경찰수','총생활인구수']]
y = X_scaled_df['총범죄건수']
X3 = sm.add_constant(X3)
model3 = sm.OLS(y, X3).fit()
print(model3.summary())
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                  총범죄건수   R-squared:                       0.903
Model:                            OLS   Adj. R-squared:                  0.876
Method:                 Least Squares   F-statistic:                     33.57
Date:                Fri, 18 Apr 2025   Prob (F-statistic):           1.61e-08
Time:                        08:17:14   Log-Likelihood:                -6.0400
No. Observations:                  24   AIC:                             24.08
Df Residuals:                      18   BIC:                             31.15
Df Model:                           5                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const        1.11e-16      0.073   1.51e-15      1.000      -0.154       0.154
총 음식점 수        0.4745      0.166      2.865      0.010       0.127       0.822
CCTV 수량        0.1789      0.097      1.840      0.082      -0.025       0.383
1인가구수          0.0846      0.098      0.866      0.398      -0.121       0.290
구별 경찰수         0.1832      0.186      0.986      0.337      -0.207       0.574
총생활인구수         0.2817      0.108      2.611      0.018       0.055       0.508
==============================================================================
Omnibus:                        0.922   Durbin-Watson:                   2.122
Prob(Omnibus):                  0.631   Jarque-Bera (JB):                0.287
Skew:                          -0.258   Prob(JB):                        0.867
Kurtosis:                       3.144   Cond. No.                         5.62
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

회귀분석(Stepwise)

이번엔 Stepwise방식으로 회귀 분석을 진행해보겠습니다.

  1. AIC 기준
  2. Adj.R2 기준

회귀분석(비교)
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                  총범죄건수   R-squared:                       0.925
Model:                            OLS   Adj. R-squared:                  0.904
Method:                 Least Squares   F-statistic:                     44.56
Date:                Fri, 18 Apr 2025   Prob (F-statistic):           1.62e-09
Time:                        08:17:14   Log-Likelihood:                -2.9309
No. Observations:                  24   AIC:                             17.86
Df Residuals:                      18   BIC:                             24.93
Df Model:                           5                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const        1.11e-16      0.064   1.72e-15      1.000      -0.135       0.135
총생활인구수         0.2247      0.090      2.484      0.023       0.035       0.415
구별 경찰수         0.4849      0.208      2.328      0.032       0.047       0.922
CCTV 수량        0.1378      0.086      1.609      0.125      -0.042       0.318
총 음식점 수        0.4033      0.149      2.712      0.014       0.091       0.716
파출소수          -0.2671      0.106     -2.509      0.022      -0.491      -0.043
==============================================================================
Omnibus:                        8.993   Durbin-Watson:                   2.176
Prob(Omnibus):                  0.011   Jarque-Bera (JB):                6.911
Skew:                          -1.060   Prob(JB):                       0.0316
Kurtosis:                       4.555   Cond. No.                         6.77
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                  총범죄건수   R-squared:                       0.905
Model:                            OLS   Adj. R-squared:                  0.872
Method:                 Least Squares   F-statistic:                     27.11
Date:                Fri, 18 Apr 2025   Prob (F-statistic):           8.25e-08
Time:                        08:17:14   Log-Likelihood:                -5.7587
No. Observations:                  24   AIC:                             25.52
Df Residuals:                      17   BIC:                             33.76
Df Model:                           6                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const        1.11e-16      0.075   1.49e-15      1.000      -0.157       0.157
총생활인구수         0.2776      0.110      2.526      0.022       0.046       0.509
구별 경찰수         0.1451      0.198      0.732      0.474      -0.273       0.563
안전벨 개수        -0.0581      0.091     -0.635      0.534      -0.251       0.135
CCTV 수량        0.1921      0.101      1.901      0.074      -0.021       0.405
총 음식점 수        0.5223      0.185      2.831      0.012       0.133       0.912
1인가구수          0.1054      0.105      1.008      0.328      -0.115       0.326
==============================================================================
Omnibus:                        0.222   Durbin-Watson:                   2.051
Prob(Omnibus):                  0.895   Jarque-Bera (JB):                0.228
Skew:                          -0.187   Prob(JB):                        0.892
Kurtosis:                       2.703   Cond. No.                         6.30
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                  총범죄건수   R-squared:                       0.903
Model:                            OLS   Adj. R-squared:                  0.876
Method:                 Least Squares   F-statistic:                     33.57
Date:                Fri, 18 Apr 2025   Prob (F-statistic):           1.61e-08
Time:                        08:17:14   Log-Likelihood:                -6.0400
No. Observations:                  24   AIC:                             24.08
Df Residuals:                      18   BIC:                             31.15
Df Model:                           5                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const        1.11e-16      0.073   1.51e-15      1.000      -0.154       0.154
총 음식점 수        0.4745      0.166      2.865      0.010       0.127       0.822
CCTV 수량        0.1789      0.097      1.840      0.082      -0.025       0.383
1인가구수          0.0846      0.098      0.866      0.398      -0.121       0.290
구별 경찰수         0.1832      0.186      0.986      0.337      -0.207       0.574
총생활인구수         0.2817      0.108      2.611      0.018       0.055       0.508
==============================================================================
Omnibus:                        0.922   Durbin-Watson:                   2.122
Prob(Omnibus):                  0.631   Jarque-Bera (JB):                0.287
Skew:                          -0.258   Prob(JB):                        0.867
Kurtosis:                       3.144   Cond. No.                         5.62
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
★모델 1의 AIC: 17.862, 모델 1의 R2: 0.925
모델 2의 AIC: 25.517, 모델 2의 R2: 0.905
모델 3의 AIC: 24.080, 모델 3의 R2: 0.903

최종 모델 검증

# 잔차정규성
resid_stats, resid_pvalue = stats.shapiro(residuals)
print(resid_pvalue)
0.07179190990614497
  • 유의수준 5% 기각 X (정규성 만족)

최종 모델 검증

최종 모델 검증
#잔차 등분산성
bptest = het_breuschpagan(model1.resid, model1.model.exog)
print(f'BP-test statistics: {bptest[0]:.3f}')
print(f'BP-test p_value: {bptest[1]:.3f}') 
#p-value가 0.3으로 귀무가설 기각하지 못함
#등분산성 만족한다고 볼 수 있음


#잔차 독립성
dw_stat = durbin_watson(model1.resid)
print(f'DW test: {dw_stat:.3f}')  
# 2 정도로 잔차 독립성 만족한다고 볼 수 있음
BP-test statistics: 5.963
BP-test p_value: 0.310
DW test: 2.176
  • 잔차의 등분산성과 독립성도 만족합니다.

최종 모델 해석
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                  총범죄건수   R-squared:                       0.925
Model:                            OLS   Adj. R-squared:                  0.904
Method:                 Least Squares   F-statistic:                     44.56
Date:                Fri, 18 Apr 2025   Prob (F-statistic):           1.62e-09
Time:                        08:17:14   Log-Likelihood:                -2.9309
No. Observations:                  24   AIC:                             17.86
Df Residuals:                      18   BIC:                             24.93
Df Model:                           5                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const        1.11e-16      0.064   1.72e-15      1.000      -0.135       0.135
총생활인구수         0.2247      0.090      2.484      0.023       0.035       0.415
구별 경찰수         0.4849      0.208      2.328      0.032       0.047       0.922
CCTV 수량        0.1378      0.086      1.609      0.125      -0.042       0.318
총 음식점 수        0.4033      0.149      2.712      0.014       0.091       0.716
파출소수          -0.2671      0.106     -2.509      0.022      -0.491      -0.043
==============================================================================
Omnibus:                        8.993   Durbin-Watson:                   2.176
Prob(Omnibus):                  0.011   Jarque-Bera (JB):                6.911
Skew:                          -1.060   Prob(JB):                       0.0316
Kurtosis:                       4.555   Cond. No.                         6.77
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
총생활인구수
구별 경찰수
총 음식점 수
파출소수
  • 통계적으로 유의함 / CCTV 제외한 변수들도 유의함

CCTV가 많은 구는 범죄수가 적을까?

  • CCTV 수와 범죄건수 간에는 유의미한 관계가 없다고 볼 수 있었다

  • 오히려 총 생활인구수, 경찰 수, 음식점 수, 파출소 수가 범죄건수에 더 큰 영향을 미친다.

서울시 치안 기준 군집화 (보너스)

상관계수가 높은 변수를 활용해서,

비슷한 치안 특성을 가진 구를 찾기위해

저희는 K-Means 클러스터링을 사용했습니다.

군집 개수 2개로 분석 수행
군집1
['강남구' '강서구' '마포구' '서초구' '송파구' '영등포구' '종로구' '중구']
군집2
['강동구' '강북구' '관악구' '광진구' '구로구' '금천구' '노원구' '도봉구' '동대문구' '동작구' '서대문구' '성동구'
 '성북구' '양천구' '용산구' '은평구' '중랑구']

군집 분석으로 알 수 있는 것
군집 총경찰수 파출소수 음식점수 인구수 총범죄수
1 1058.38 7468.25 464,404.93 12.38 9337.38
2 734.65 3824.71 377,246.14 8.41 5867.06
그룹 1 분석
  • 복잡하고 밀도 높음
  • 인구가 많고 상권이 큼
  • 경찰과 파출소 수도 많아 치안 자원이 이미 많이 투입된 상태
  • 그럼에도, 범죄 건수가 높다
그룹 2 분석
  • 그룹 1보다 평균적으로 수치가 낮다
  • 도시 외곽 또는 상대적으로 조용한 주거 지역
  • 인구도 적고 음식점도 적으며, 경찰/파출소 수도 적다.
  • 그에 따라, 범죄 건수도 낮다.

군집간 총 범죄 건수 비교

군집간 총 범죄건수의 평균에 차이가 있다.